



/// #include  "../CCT/CCT_Logic.h"



#ifndef __CCT_LOGIC_H__
#define __CCT_LOGIC_H__


#include "stdint.h"



#define  LOGIN_SEC                 3   //秒钟

#define  HEART_BEAT_SEC            30  //秒
//#define  HEART_BEAT_SEC            117  //秒  ---0x20,0x11,0x03,0x22



#define  LOGIN_CNT_MAX             20    
#define  HEART_BEAT_CNT_MAX        3 



#define  SERVER_BUF_MAX   (1024+256U)



// 主集中器状态

//#define  INITIAL                   0    //  Initial
//#define  LOGINING                  1
//#define  NORMAL_WORK               3



typedef enum {

  INITIAL = 0,  
  WAITTING,	
  LOGINING,


 #if CHARGE16_SERVER_ENABLE               //集中器接16路充电服务器 
  GET_TIME,	
  AUTO_SEND,		
#endif	
	
  NORMAL_WORK	,

} CCT_Status_e;  



#pragma pack(1)

typedef struct {
	
CCT_Status_e   Status;	////集中器状态
	
 uint8_t   ReLogon;    //重新登录	
	
 uint8_t   ucLoginCnt ;    // 登陆计数 
 uint8_t   ucLoginSec ;    // 登陆计时 
 uint8_t   ucHeartBeat;       // 心跳值 	
 uint8_t   ucHeartBeatTry;    // 心跳重发计数  
 uint8_t   ucHeartBeatSec;    // 心跳计时 	
	
 uint8_t   ucLoginAckFlag;     //登录应答标志
 uint8_t   ucGetTimeAckFlag;   //获取服务器时间应答标志	
 uint8_t   ucPowerDownFven; 	 //集中器掉电上电标志
	
 uint8_t   ucSystemRest;      
	
 uint8_t   ucData;         //备用 reserved
	
 uint32_t  u32RunTime_Sec;     //设备开机后累计运行时间(大端模式，单位：秒)	
	

}  CCT_Obj_st ;

#pragma pack()





#pragma pack(1)

typedef struct {
	
 uint8_t   rtc ;       // 集中器时间 
 uint8_t   fw_ver ;    // 集中器软硬件信息
 uint8_t   hw_ver;     // 集中器软硬件信息
 uint8_t   gprs;       // 移动模块信息
	

}  CCT_Param_st ;

#pragma pack()


 //通信接口通道编号,1=GPRS,2以太网，3---PC串口

typedef enum {

  SERVER_CH_NULL = 0,  
  SERVER_CH_GPRS,	     //1=GPRS,
  SERVER_CH_ETH,       //2以太网，
  SERVER_CH_PC_COM,	   //3---PC串口

} Server_Chn_e;   //channel   上行通信接口通道编号


#pragma pack(1)


typedef struct  {

uint8_t    Flag ;  //接收数据完成标志
uint8_t    Doing ; //正常处理数据标记
	
Server_Chn_e    Ch ;	   //通信接口通道编号,1=GPRS,2以太网，3---PC串口
	
uint16_t   Len ; 
uint16_t   Size ;  
	
uint8_t*   Buff; 
//uint8_t   Buff[1500]; 	
	
	
} Server_RxData_st;


#pragma pack( )




extern  CCT_Obj_st   CCT_Obj ;


extern  Server_RxData_st  Server_RxData;




extern volatile uint8_t   g_ucReciveServerFlag;     /* 接收到服务器有效命令 */       
extern volatile uint16_t  g_ucReciveServerLen;     


 //通信接口通道编号,1=GPRS,2以太网，3---PC串口

extern Server_Chn_e   gucServer_Tx_Chn  ;   //channel   上行通信接口通道编号


extern uint8_t g_ucConcentratorState[17];  

//extern volatile uint8_t    g_ucReciveServerDataBuffer[SERVER_BUF_MAX];  

//extern volatile uint8_t    g_ucReciveNodeData[SERVER_BUF_MAX];              
//extern volatile uint8_t    g_ucReciveNodeDataBuffer[SERVER_BUF_MAX];      

//extern uint8_t    g_ucSendToServer[SERVER_BUF_MAX];            
//extern uint8_t    g_ucSendToServerBuffer[SERVER_BUF_MAX];     
//extern uint8_t    g_ucSendToServerData[SERVER_BUF_MAX];             /* 发送缓冲区 */







void CCT_Logic_Init(void);
void CCT_Logic_Process(void);

//------周期 1sec---------
void CCT_Logist_Tick(void);


//---查询集中器是否在线------
//返回0---集中器不在线，1--集中器在线
uint8_t  IsCCT_Online(void);

uint8_t  GetCCT_State(void);
void  ResetCCT_State( void );
void  ResetCCT_Heart( void );
void  ClearCCT_Heart( void );
	
void  CCT_ReLogon( void );	
void  CCT_SystemRestCmd( void );	
	


#endif    //__CCT_LOGIC_H__

























